using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Drawing;

namespace GraphConstructorControl
{
    abstract class Element : IEvents
    {
        public abstract void OnMove(object sender, GrapherDragEventArgs e);
        public abstract void OnBeginMove(object sender, GrapherDragEventArgs e);
        public abstract void OnEndMove(object sender, GrapherDragEventArgs e);
        public abstract void OnMoveLeave(object sender, GrapherDragEventArgs e);
        public abstract void OnMoveOver(object sender, GrapherDragEventArgs e);

        public abstract void OnHelpRequested(object sender, HelpEventArgs hlpevent);
        public abstract void OnKeyDown(object sender, KeyEventArgs e);
        public abstract void OnMouseClick(object sender, MouseEventArgs e);
        public abstract void OnMouseDoubleClick(object sender, MouseEventArgs e);
        public abstract void OnMouseDown(object sender, MouseEventArgs e);
        public abstract void OnMouseUp(object sender, MouseEventArgs e);
        public abstract void OnMouseEnter(object sender, EventArgs e);
        public abstract void OnMouseHover(object sender, EventArgs e);
        public abstract void OnMouseLeave(object sender, EventArgs e);
        public abstract void OnMouseMove(object sender, MouseEventArgs e);

        public abstract void OnPaint(object sender, PaintEventArgs e);
        public abstract void OnResize(object sender, EventArgs e);


        //public abstract Rectangle GetBorder();
        public abstract Point Location();
        public abstract bool ContainPoint(Point p);
        public abstract Element GetDragDropData();
        public abstract void DragDrop(object sender, GrapherDragEventArgs e);

        public bool isSelected = false;


    }


}
